From: Alex Williamson Date: Fri, 30 Mar 2007 16:27:15 +0000 (-0600) Subject: [IA64] Avoid insertion of pte.ma=001 into VHPT X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15272 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22man:///%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22man:/?a=commitdiff_plain;h=260e4d9ab374955ae3189dc9f22692fa3a85fd09;p=xen.git [IA64] Avoid insertion of pte.ma=001 into VHPT A TLB entry shouldn't be inserted into VHPT when its memory attribute field is 001 "software reserved". Without this patch, a TLB fault expected by a guest OS is missing. Signed-off-by: Kouya Shimura --- diff --git a/xen/arch/ia64/vmx/vmx_process.c b/xen/arch/ia64/vmx/vmx_process.c index 4ee7d4e805..ee811ba777 100644 --- a/xen/arch/ia64/vmx/vmx_process.c +++ b/xen/arch/ia64/vmx/vmx_process.c @@ -437,6 +437,11 @@ vmx_hpw_miss(u64 vadr , u64 vec, REGS* regs) if (!guest_vhpt_lookup(vhpt_adr, &pteval)) { /* VHPT successfully read. */ if (pteval & _PAGE_P) { + if ((pteval & _PAGE_MA_MASK) == _PAGE_MA_ST) { + vcpu_set_isr(v, misr.val); + itlb_fault(v, vadr); + return IA64_FAULT; + } vcpu_get_rr(v, vadr, &rr); itir = rr & (RR_RID_MASK | RR_PS_MASK); thash_purge_and_insert(v, pteval, itir, vadr, ISIDE_TLB);